<template></template>
<script>
import { httpUrl } from '@/utils/options.js'
import { audio } from '@dcloudio/uni-app'
const KJAudio = uni.requireNativePlugin('KJ-Audio')
export default {
  data() {
    return {
      recorderManager: null,
      innerAudioContext: null,
      file: null,
      count: 0
    }
  },
  computed: {},
  onLoad() {},
  methods: {
    startRecord() {
      try {
        KJAudio.stop(res => {})
        var dic = {
          filePath: plus.io.convertLocalFileSystemURL('_doc/KJ-Audio'), //保存缩略图的路径，必须传_doc下的本地绝对路径
          format: 'aac', //音频格式，有效值 aac/wav
          sampleRate: 8000, //采样率，有效值 8000/16000/44100
          numberOfChannels: 2, //录音通道数，有效值 1/2
          encodeBitRate: 16000, //ios才支持 编码码率
          linearPCMBitDepthKey: 8, //ios才支持 线性采样位数 有效值 8, 16, 24, 32
          encoderAudioQuality: 'Low', //ios才支持 音频质量,采样质量 有效值 Min Low Medium High Max
          isService: false, //android才支持，是否开启后台服务，在后台和熄屏都可以录音
          notificationID: 'KJ-Audio10', //android8才支持，通知ID
          notificationName: '主服务', //android8才支持，通知名
          notificationTitle: '录音服务', //android才支持，通知标题
          notificationText: '运行中...', //android才支持，通知内容
          isSetNotificationVibrate: false, //android才支持，是否设置震动，由于android机制，通知设置过了，就不能再修改，如果要修改，要先修改notificationID
          isRequestPermissions: true //android才支持，是否申请RECORD_AUDIO权限
        }
        console.log('录音', KJAudio)
        KJAudio.start(dic, res => {
          this.json = JSON.stringify(res)
          // console.log("信息", this.json)
          if (res.result && res.error == 'systemStop') {
            //ios 通话的时候，系统会自动停止，andorid，不受影响，只是不能录制，电话挂了之后，会继续录音
            console.log('总时长: ' + res.duration) //单位秒
            console.log('stop: ' + JSON.stringify(res))
            this.upload(res)
          }

          // console.log('start: ' + JSON.stringify(res))
        })
      } catch (e) {
        console.log('错误关闭', e)
        //TODO handle the exception
      }
    },
    pause() {
      KJAudio.pause(res => {
        console.log('pause总时长: ' + res.duration) //单位秒
        console.log('stop: ' + JSON.stringify(res))
        this.json = JSON.stringify(res)

        this.upload(res)
        //注意：ios 返回的录音文件不能播放
      })
    },
    resume() {
      KJAudio.resume(res => {
        console.log('resume总时长: ' + res.duration) //单位秒
        console.log('stop: ' + JSON.stringify(res))
        this.json = JSON.stringify(res)
        this.upload(res)
        console.log('resume: ' + JSON.stringify(res))
      })
    },
    upload(file, cb) {
		console.log("上传参数",this.$store.state.curItem)
		let time
		if (process.env.NODE_ENV === 'development') {
			 time = 60
		} else if (process.env.NODE_ENV === 'production') {
			 time = file.duration
		}
      uni.uploadFile({
        url: httpUrl + '/nurse/order/nurseVideo',
        // url: 'http://192.168.0.47:5002/nurse/order/nurseVideo',
        // url: 'http://192.168.1.32:5002/nurse/order/nurseVideo',
        filePath: file.filePathName,
        name: 'file',
        formData: {
          number: this.$store.state.curItem,
          videoTime: time
          // videoTime: 0
        },
        header: {
          token: this.$store.state.token
        },
        success: res => {
          console.log('')
          cb & cb()
          console.log('录音上传结束', res)
        },
        fail: err => {
          uni.hideLoading()
          uni.showToast({
            tilte: '上传失败~',
            icon: 'none',
            duration: 1200
          })
          return
        }
      })
    },
    stopRecord(cb) {
      let that = this
      KJAudio.stop(res => {
        this.json = JSON.stringify(res)
        console.log('stop总时长: ' + res.duration) //单位秒
        console.log('stop: ' + JSON.stringify(res))
        that.upload(res, cb)

        // var p = plus.audio.createPlayer(plus.io.convertAbsoluteFileSystem(res.filePathName));
        // p.play(function() {
        // 	console.log("Audio play success!");
        // }, function(e) {
        // 	console.log("Audio play error: " + e.message);
        // });
      })
    },
    getStatus() {
      if (plus.os.name == 'Android') {
        KJAudio.getStatus(res => {
          var result = JSON.parse(res.result) //0-未开始 1-预备 2-开始 3-暂停 4-停止
          let map = {
            STATUS_NO_READY: false,
            STATUS_START: true,
            STATUS_READY: true
          }
          let status = map[result] ? map[result] : false
          this.$store.commit('setIsRecord', status)
          console.log('触发2222222222222', result, result == 'STATUS_START')
          console.log('触发111111111111', result, result == 'STATUS_READY')
          console.log('res', result)
          // result
          // STATUS_NO_READY  未开始
          // STATUS_READY  预备
          // STATUS_START   开始
          // STATUS_NO_READY 停止
        })
      } else {
        KJAudio.isRecording(res => {
          var result = res.result //是否在录音
          let resl = JSON.stringify(res)
          console.log('是否在录音', resl)
          this.$store.commit('setIsRecord', result)
        })
      }
    }
  }
}
</script>
